package io.hilo.example.account.dms;

import org.jretty.apibase.Result;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import org.hilo.boot.core.BaseDms;
import io.hilo.example.account.dao.DemoUserEntityMapper;
import io.hilo.example.account.entity.UserEntity;
import io.hilo.example.common.Msg;


/**
 * 除基本增删查改外，可以自行扩展数据处理、多表操作的方法。
 */
@Repository
public class DemoUserEntityDms extends BaseDms<UserEntity, DemoUserEntityMapper> {
    
    @Override
    public UserEntity selectByPrimaryKey(Object key) {
        UserEntity user = super.selectByPrimaryKey(key);
        user.setPassword(null); // 不显示密码
        return user;
    }
    
    /**
     * 更新密码
     */
    public int updatePassword(Long userId, String newPassword) {
        UserEntity record = new UserEntity();
        record.setId(userId);
        // record.setPassword(passwordService.encode(newPassword));
        return super.update(record);
    }
    
    /**
     * 更新用户信息（级联更新用户角色）
     */
    @Transactional
    public void updateUser(UserEntity user) {
        if (user.getRoleIdList() != null) {
            // userRoleDms.updateUserRole(user.getId(), user.getRoleIdList());
        }
        super.update(user);
    }
    
    /**
     * 新增用户
     */
    @Transactional
    public void addUser(UserEntity user) {
        super.insert(user);
        if (user.getRoleIdList() != null) {
            // userRoleDms.insertUserRole(user.getId(), user.getRoleIdList());
        }
    }
    
    /**
     * 检查密码
     */
    public Result<String> checkPassword(Long userId, String password) {
        // 查询用户信息
        UserEntity user = baseMapper.selectByPrimaryKey(userId);
        if (user == null) {
            return Result.fail(Msg.UNKNOWN_ERR, "can not find user info");
        }
        return Result.success();
    }
    
}
